package com.zhihao.types.annotations;

import java.lang.annotation.*;

/**
* @author Jackson
* @create 2025/5/7 10:03 
* @description    
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface RateLimiterAccessInterceptor {

    /*
        基于用户userId的限流策略: 限制用户频繁访问
     */
    String key() default "all";

    /*
        每秒允许用户的接口执行次数
     */
    long permitsPerSecond();

    /*
        被限流多少次后 进入 24h黑名单
     */
    double blacklistCount() default 0;

    /*
        限流器的自动过期时间(单位：分钟)：即每个限流器持续60min(1h)
            用户在最近1h内无抽奖活动，即自动清理该用户的限流器；
            只要在用户限流器未释放前，用户参与，则会自动续期1h；(暂时不使用)
     */
    long rateLimiterTTL() default 60;

    /*
        黑名单成员的接口反馈方法
     */
    String fallbackMethod();


}
